using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Versioning;

namespace zhwy.saas.api.Configurations
{
    public static class ApiVersioningSetup
    {
        public static void AddApiVersioningSetup(this IServiceCollection services)
        {
            services.AddApiVersioning(options =>
            {
                // 默认版本号
                options.DefaultApiVersion = new ApiVersion(1, 0);
                // 未指定版本时使用默认版本
                options.AssumeDefaultVersionWhenUnspecified = true;
                // 在响应标头中显示版本信息
                options.ReportApiVersions = true;
                // 版本号获取方式
                options.ApiVersionReader = ApiVersionReader.Combine(
                    new UrlSegmentApiVersionReader(),          // 从URL路径中获取版本号
                    new HeaderApiVersionReader("api-version"), // 从请求头中获取版本号
                    new QueryStringApiVersionReader("api-version") // 从查询字符串中获取版本号
                );
            });

            services.AddVersionedApiExplorer(options =>
            {
                // 版本号格式 'v'major[.minor][-status]
                options.GroupNameFormat = "'v'VVV";
                options.SubstituteApiVersionInUrl = true;
            });
        }
    }
} 